查看原文
其他

Python爬虫系列-途家

2017-10-10 范凌 Python爱好者社区

作者:范凌     

Python社区专栏作者  终身学习者。 

简书ID:只是不在意

博客专栏:http://www.jianshu.com/u/b062b6eb573b


途家网不算很难爬,虽然它在同类网站中被我放到了最后。房间数用bs不算难取,而且城市列表也是用js很快就找到了。



这里就把新学到的两个知识点写一下:



首先是途家的js包有点怪,类似天气网的包,所以要用切片或者截取字符串的形式摘取字典。它的前面不但有var...等字符,最后还有一个分号,所以前后都要摘取。
这里我开始写的切片不对,请教yaung大神后应该是以下几种格式:
字符串格式,用replace语句


city_data=requests.get(url='https://www.tujia.com/Common/CityInfo/').content.decode('utf-8') city_data=str(city_data).replace('var cityInfo = ','').replace(';', '') print(city_data) city_info=json.loads(city_data) print(city_info['hotgroup'])


我后来改对的,用strip语句


city_data=str(city_data).lstrip('var cityInfo = ').rstrip(';')


切片格式:


city_data = str(city_data)[len('var cityInfo = '):-1]


我原来也是这种格式,但我犯了傻,一个个数字符,其实用len函数就好了嘛,而且也没有用‘-1’去把后面的分号去掉,所以改来改去都不对。

我是继续犯傻的分界线


然后把城市名调入网页url的格式,也还是没有掌握好,
一种是


city_id='sanya' url='http://www.baidu.com?{}.html'.format(city_id) print city_url


这里我光是套入了{},忘了写format(明明以前的代码有示范),所以死活读不出来。
另外一个格式是用%s,这个书里有学,但还是不会活用。


city_id='sanya' url='http://www.baidu.com?%s.html' city_url=url % city_id


打印url是为了:一般构造完以后,测试时候先把构造的url打印一下,再请求。如果url都没有构造对,封装函数也是解析不出数据的。-by程工

按理说 requests.get(url).content 方法是返回的byte型源码,可以不用decode('utf-8'),但我这里就会报错,不知道是不是跟后面的犯傻有关。

附上部分代码,其他请求头那些就不再写了。


def get_city_room_num(city_temp): url = 'https://www.tujia.com/{city_temp}_gongyu/'.format(city_temp) html = requests.get(url, headers=get_headers()).content soup=BeautifulSoup(html,'html.parser') number = soup.find('div',attrs={'class': 'total-house-amount'}) return number url2 = 'https://www.tujia.com/***' html=requests.get(url2,headers=get_headers()).content.decode('utf-8') html=str(html).lstrip('var cityInfo = ').rstrip(';') infos1=json.loads(html) infos=infos1['citys']


今天其实还犯了第三件傻事,把一个很重要的json encoding文件删掉了。重装python以后也没找回来,pip安装都报错,最后装了anaconda搞掂。

希望明天人品好,不要在json上给我捣乱了,不然真的好花时间。
又学到了新的东西,还是挺高兴的~

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

1.崔老师爬虫实战案例免费学习视频。

2.丘老师数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存